package com.xiaozhen.system.service;

import com.xiaozhen.common.core.domain.system.SysDept;
import com.xiaozhen.common.core.domain.vo.TreeSelect;

import java.util.List;

/**
 * HISTORY
 *
 * @author zhenweisheng
 * @date 2021/8/19 14:21
 * @description:
 */
public interface SysDeptService {
    /**
     * 查询部门管理数据
     *
     * @param dept 部门信息
     * @return 部门信息集合
     */
    List<SysDept> selectDeptList(SysDept dept);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param depts 部门列表
     * @return 下拉树结构列表
     */
    List<TreeSelect> buildDeptTreeSelect(List<SysDept> depts);

    /**
     * 构建前端所需要树结构
     *
     * @param depts 部门列表
     * @return 树结构列表
     */
    List<SysDept> buildDeptTree(List<SysDept> depts);

    /**
     * 检查部门名称是否重复
     * @param dept
     * @return
     */
    Boolean checkDeptNameUnique(SysDept dept);

    /**
     * 新增
     * @param dept
     * @return
     */
    Integer insertSysDept(SysDept dept);

    /**
     * 修改
     * @param dept
     * @return
     */
    Integer updateSysDept(SysDept dept);

    /**
     * 检查存在下级部门
     * @param deptId
     * @return
     */
    Boolean hasChildByDeptId(Long deptId);

    /**
     * 检查部门存在用户
     * @param deptId
     * @return
     */
    Boolean checkDeptExistUser(Long deptId);

    /**
     * 根据ID删除部门
     * @param deptId
     * @return
     */
    Integer deleteDeptById(Long deptId);
}
